package com.example.interview.Thread;

/**
 * Created with Intellij IDEA.
 * Description;
 * User:TQ02
 * Data:2024-07-08
 * Time:21:31
 * Text：一种轻量级的同步机制，主要用于确保变量的可见性，即当一个线程修改了被 volatile 修饰的变量时，其他线程能够立即看到修改后的值。
 */
public class Volatile {

    private  boolean flag = false;

    public void toggleFlag() {
        flag = !flag; // 状态切换操作
    }

    public boolean isFlagSet() {
        return flag; // 状态读取操作
    }

    public static void main(String[] args) {
        Volatile example = new Volatile();

        // 线程1：修改flag
        new Thread(() -> {
            example.toggleFlag();
            System.out.println("Thread 1 toggled flag");
        }).start();

        // 线程2：读取flag
        new Thread(() -> {
            while (!example.isFlagSet()) {
                // 等待flag变为true
            }
            System.out.println("Thread 2 detected flag is true");
        }).start();
    }

}
